草庐IT

MySQL WHERE 子句

全部标签

mysql - SQL:了解 WHERE 子句中的 OR 运算符

我有名为Movie、Genre和Keyword的表,我从中创建了一个名为“genkeyword”的View。View“genkeyword”有很多元组,因此可以在DBFiddle访问它。.我有以下查询:SELECTtitle,year,Count(DISTINCTgenre)ASgenre_freq,Count(DISTINCTkeyword)ASkeyword_freqFROMgenkeywordWHERE(genreIN(SELECTgenreFROMgenkeywordWHEREtitle='HarryPotterandtheDeathlyHallows')ORkeywordIN

mysql - 为什么在 where 子句中带有 'LIKE word%word2' 的 mysql SELECT 不使用索引

查询很大,在WHERE子句中包含一长串“LIKE”测试,例如...SELECTcolAFROMtWHERE(colXLIKE'word1%word2%'ORcolXLIKE'word3%word4%'或者...);colX有一个索引。mysql使用索引,因为比较不以“%”开头。通过检查EXPLAIN,我看到当SQL字符串变大时,mysql停止使用索引并开始进行全表扫描。这似乎与where子句中“LIKE”测试的数量有关。在达到阈值时,我可以再添加一个“LIKE”,它会停止使用索引,并且比没有额外的“LIKE”花费的时间长10倍。是否有一些mysql变量可以控制这样的行为?

mysql - 带有 INNER JOIN 的 SELECT 子句影响行数的奇怪行为? (MySQL 5.1.52)

我的一个测试用例遇到了一个我无法解释的奇怪问题。它归结为一个应该返回1行的查询,而不是返回零。这是失败的查询。SELECTroles.idFROM`roles`INNERJOIN`accounts_roles`ON`roles`.id=`accounts_roles`.role_idWHERE(`roles`.`id`=9)AND(`accounts_roles`.account_id=6)LIMIT1;11:24:07[SELECT-0row(s),0.001secs]Emptyresultsetfetched这是我无法解释的部分。如果我将roles.id更改为*我可以看到那里有数据

php - 如何在不带括号的 Zend_Db_Select 语句中使用 "HAVING"子句?

我知道Zend提供了having()方法,但我想要的是这样的查询:SELECTa.*,`as`.*FROM`fruit_db`.`apples`AS`a`INNERJOIN`fruit_db`.`apple_seeds`AS`as`ONa.id=as.apple_idWHERE(a.id=1)ANDas.seed_nameHAVING'johnny'不是“有(as.seed_name='johnny')”回溯一下,我们有表格:fruit_db.apples|id|name|--------------|1|red||2|green|fruit_db.apple_seeds|apple_

mysql - 具有多个 where 和 order by 子句的慢查询

我正在尝试寻找一种方法来加速缓慢的(文件排序)MySQL查询。表格:categories(id,lft,rgt)questions(id,category_id,created_at,votes_up,votes_down)示例查询:SELECT*FROMquestionsqINNERJOINcategoriescON(c.id=q.category_id)WHEREc.lft>1ANDc.rgt如果我删除ORDERBY子句,它会很快。我知道MySQL不喜欢在同一个子句中同时使用DESC和ASC命令,所以我尝试添加一个复合(created_at,votes_up)索引到question

php - 从 4 个 where 子句中的每一个中选择 1 个 rand() mysql

使用MySQL和PHP。我正在尝试从表格中随机选择4个广告。1个用于adspot1、1个用于adspot2、1个用于adspot3、1个用于adspot4。这是我的表格的样子:ad_id|ad_spot|ad_html1|3|2|1|3|4|4|2|表中大约有1200个广告,每个广告位都有多条记录,记录随时可能更改。下面是我用来为特定广告位选择1个随机广告的查询:SELECTad_htmlFROMadsWHEREad_spot='2'ORDERBYRAND()LIMIT1我为一个脚本计时,该脚本选择了所有1200条记录并将它们放入一个PHP数组中,然后为每个广告位随机选择1个。这比使用

php - 在 'country_id' 子句中获取列 'where' 是不明确的 - cakephp 1.3 中的搜索查询错误

我正在使用CakePHP1.3版本使用搜索插件来实现搜索功能。我有三个模型:演示,国家国家Demo有两个外键,country_id和state_id。State具有外键country_id。我正在做的是,我有一个搜索表单,其中包含国家和州下拉列表,从国家和州表中获取所有数据。当我从下拉列表中搜索任何国家并提交表格时,它会显示以下错误。如果我只使用状态下拉列表进行搜索,我会得到正确的结果。当我执行搜索查询时,出现错误'Column'country_id'inwhereclauseisambiguous'我的查询是:SELECT`Demo`.`id`,`Demo`.`demo2`,`Dem

mysql - 使用 where 子句将数据表复制到表

正在尝试将新数据从表1复制到表2。我不确定如何用其他方式编码INSERTtable1SELECTx.*,y.TIMESTAMFROMtable1x,table2yWHEREx.TIMESTAM>y.TIMESTAM;如果时间戳较新(>)表2中的第1行,我想复制表1中的所有列 最佳答案 以下是将所有较新的数据从表2复制到表1的方法:INSERTINTOtable1SELECT*FROMtable2WHERETIMESTAM>(selectMAX(TIMESTAM)FROMtable1);

php - php (for+if) 与 SQL 子句中的性能影响过滤器/顺序/限制数组

我正在使用wordpress,它有一个很好的databaseinterface,做很多简单的查询是非常有用的。我想使用这个界面,但它不允许我做一些特殊的过滤。然后我想我可以从数据库返回一个结果集,然后使用带有嵌套if的php进行筛选,取出我不想要的结果。我正在考虑对订购做同样的事情。我知道如果我有索引(在PHP中我不能将它们用于数组,但在mysql中我有)像过滤器(WHERE)和排序这样的操作与顺序操作相比非常快。我在考虑php_mysql适配器的性能,我不知道它是否使用延迟加载数据、游标以及将数据从数据库传递到php时的内存影响。另一个用途是限制/计数,在生成分页链接的常见情况下,需

mysql - 三个表 INNER JOIN 和 WHERE 子句

我有四张table1.tbl_threads2.tbl_comments3.tbl_votes4.tbl_users假设当前登录的user_id=3thread_id=10现在我必须检索以下数据Allthefieldsfromtbl_commentswheretbl_comments.thread_id=10Allthefieldsfromtbl_usersbasedonthecommonkeytbl_users.user_id=tbl_comments.user_idAllthefieldsfromtbl_votesWhereuser_id=3Andtbl_votes.comment